import { createStore } from 'vuex'
import router from '@/router'

export default createStore({
  //准备state对象——保存具体的数据
  state: {
    // 路由是否加载 只加载一次
    hasRoutes:false
  },
  // 概念：当state中的数据需要经过加工后再使用时，可以使用getters加工。
  getters: {
    // 获取token
    GET_TOKEN(state) {
      return sessionStorage.getItem("token")
    },
    // 获取菜单
    GET_MENU_LIST(state) {
      return JSON.parse(sessionStorage.getItem("menus"))
    },
    // 获取用户名信息
    GET_USERINFO() {
      return JSON.parse(sessionStorage.getItem("userinfo"))
    }
  },
  //准备actions对象——响应组件中用户的动作
  actions: {
    logout(store) {
      console.log('退出登录成功', router)
      window.sessionStorage.clear()
      router.push({
        path: '/login'
      })
    }
  },
  //准备mutations对象——修改state中的数据
  mutations: {
    SET_TOKEN(state, token) {
      console.log('mutations#token:', token)
      sessionStorage.setItem("token", token)
    },
    // 设置菜单进入cookie
    SET_MENU_LIST(STATE, menus) {
      console.log('mutations#menus:', menus)
      sessionStorage.setItem("menus", JSON.stringify(menus))
    },
    // 保存用户名信息
    SET_USERINFO(state, userinfo) {
      sessionStorage.setItem("userinfo", JSON.stringify(userinfo))
    },
    // 设置是否加载路由
    SET_HAS_ROUTER(state, hasRoutes){
      state.hasRoutes = hasRoutes
    },

  },

  modules: {
  }
})
